package priv.conceit.study.leetcode.medium;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * 编号144
 * 二叉树的后序遍历
 * <a href=""></a>
 * 给定一个二叉树，返回它的 前序 遍历。
 *
 * @author conceit
 * @since 1.0.0, 2019/7/23
 */
@SuppressWarnings("all")
public class BinaryTreePostorderTraversal {

	public static void main(String[] args) {



	}

	public List<Integer> postorder(TreeNode root){
		return null;
	}


	/**
	 * 递归
	 * 后序递归于前序 中序 总体结构一致
	 * 递归体
	 *
	 * 左节点->右节点->根节点
	 *
	 * @param root
	 * @return
	 */
	public List<Integer> postOrderRecursion(TreeNode root){
		List<Integer> result=new ArrayList<>();
		if(Objects.nonNull(root)){
			postOrderRecursionHelper(root,result);
		}
		return result;
	}


	public void postOrderRecursionHelper(TreeNode root,List<Integer> result){
		if(Objects.nonNull(root)){
			postOrderRecursionHelper(root.left,result);
			postOrderRecursionHelper(root.right,result);
			result.add(root.val);
		}
	}



	public class TreeNode {
		int val;
		TreeNode left;
		TreeNode right;

		TreeNode(int x) {
			val = x;
		}
	}


}
